Decoding MIMO space time code symbol-pairs

ABSTRACT

A MIMO wireless communication system and method reduces the number of recursive operations when decoding received data symbols by decoding the data symbols in pairs rather than on a per symbol basis. Decoding in pairs is facilitated by the determination that errors between selected pairs of data symbols are uncorrelated and identically distributed with a determined variance. Additionally, the system and method can order the pairs and provide decoding rules that result in an insignificant loss of performance for a wide range of signal-to-noise ratios (SNRs). Furthermore, the system and method exploit the structure of the error covariance matrix to reduce computational demands.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates in general to the field of information processing and in particular relates to a multiple input, multiple output communication system and method for efficient decoding of space time codes using symbol-pair decoding.

2. Description of the Related Art

The demand for wireless communication systems continues to expand. Wireless communication systems transmit and receive signals within a designated electromagnetic frequency spectrum. Wireless communication systems can be virtually any type of wireless one-way or two-way communication device such as cellular telephones, wireless equipped computer systems, and wireless personal digital assistants. The signals communicated between base stations and subscriber stations can include data such as voice, electronic mail, still images, and video.

Various wireless communication technologies employ multiple antennas at the transmitter and receiver of communication devices to improve range and performance of communication systems. Multiple-input multiple-output (MIMO) communication systems employ multiple antennas at both the receiver and transmitter. MIMO systems transmit multiple data streams in parallel thus creating a linear increase in throughput with every pair of receiver/transmitter antennas added to the MIMO system. MIMO systems exploit unique spatial transmission paths between a transmitter and receiver to increase throughput without necessitating an increase in bandwidth or total transmission power.

FIG. 1 depicts an example multiple input, multiple output (MIMO) communication system 100. Generally one communication device is referred to as a base station and one or more other communication devices are referred to as subscriber stations. Additionally, in general, both base stations and subscriber stations include a transmitter and a receiver. Communication system 100 depicts a base station 102 and a single subscriber station 104. The base station 102 is, for example, a cell phone base station, and the subscriber station 104 is, for example, a cellular telephone.

Communication system 100 transmits a signal x and provides at least an intelligible estimate of the signal x to a user. (Note: lower case bold variables indicate vectors and upper case BOLD variables indicate matrices). In at least one embodiment, the signal x is a discrete time signal. The modulator 105 modulates signal x into symbols x_(m). The particular modulation scheme is a matter of design choice. In one embodiment, modulator 204 performs quadrature amplitude modulation, such as a quadrature phase-shift keying (QPSK). QPSK quantizes each element of signal x to one of four values in a four-value constellation.

Under typical conditions, transmitted data traverses a corrupting transmission environment characterized by scattering, attenuation, reflection, and refraction. The transmitted data is also corrupted by non-idealities n in the receiver, such as thermal noise. Space-time code (STC) encoder 106 employs space-time coding to combine copies of the transmitted symbols s in a way that allows extraction of as much information as possible and to differentiate between transmitted symbols s={s₁, s₂, s₃, . . . , s_(T)}, where T is a discrete temporal dimension. The STC encoder encodes the symbols s into a linear STC matrix S:

$\begin{matrix} {S = \begin{pmatrix} s_{11} & s_{12} & \cdots & s_{T} \\ s_{21} & s_{21} & \cdots & s_{2T} \\ \cdots & \cdots & \cdots & \cdots \\ s_{t\; 1} & s_{t\; 2} & \cdots & s_{tT} \end{pmatrix}} & (1) \end{matrix}$

The particular space-time code used by the STC encoder 106 is a matter of design choice. Unless otherwise indicated, matrix rows indicate discrete time intervals and matrix columns indicate antenna dimension.

The MIMO modulator/transmitter 108 combines each row of STC matrix S and modulates each combination. In at least one embodiment, modulation is accomplished using orthogonal frequency division multiplexing OFDM modulation. Each row of STC matrix S is then transmitted by modulator/transmitter 108 such that the i^(th) antenna transmits the i^(th) row of STC matrix S.

During transmission between the base station 102 and the subscriber station 104, the transmitted STC matrix S is modified by a channel matrix H. The channel matrix H represents the modification of STC matrix S by the transmission environment. In at least one embodiment, both the base station 102 and subscriber stations 104 know the estimated element values of channel matrix H using, for example, well-known pilot estimation techniques.

A channel matrix H_(MN) can be written generally as an (N×M) matrix where M is the number of transmit antennas and N is the number of receiver antennas. A channel matrix H for a 2×2 MIMO transmitter and receiver system can be represented by a matrix of individual channel coefficients h₁₁, h₁₂, h₂₁, and h₂₂ as set forth in Equation (2):

$\begin{matrix} {H_{22} = {\begin{bmatrix} h_{11} & h_{12} \\ h_{21} & h_{22} \end{bmatrix}.}} & (2) \end{matrix}$

h₁₁ represents a channel portion from a transmitter antenna 116.1 to a receiver antenna 118.1. h₂₁ represents a channel portion from the transmitter antenna 116.1 to a receiver antenna 118.2. h₁₂ represents a channel portion from the transmitter antenna 116.2 to the receiver antenna 118.1. h₂₂ represents a channel portion from the transmitter antenna 116.2 to the receiver antenna 118.2.

A (3×2) MIMO system has a transmission channel represented by a channel matrix H₃₂ set forth in Equation (3):

$\begin{matrix} {H_{32} = \begin{bmatrix} h_{11} & \begin{matrix} h_{12} & h_{13} \end{matrix} \\ h_{21} & \begin{matrix} h_{22} & h_{23} \end{matrix} \end{bmatrix}} & (3) \end{matrix}$

A (4×2) MIMO system has a channel represented by a channel matrix H₄₂ as set forth in Equation (4):

$\begin{matrix} {H_{42} = \begin{bmatrix} h_{11} & h_{12} & h_{13} & h_{14} \\ h_{21} & h_{22} & h_{23} & h_{24} \end{bmatrix}} & (4) \end{matrix}$

and so on.

Space Time Encoding

A MIMO transmitter typically maps a stream of modulated data bits to be sent to a receiver into an appropriate space time code (STC) for transmission. This STC uses the dimensions of space and time to encode the multiple data bits. The use of an array of multiple antennas implements the space dimension, and the time dimension is implemented by having each antenna in the array send a series of transmitted symbols in succession.

In particular, one or more bits from a transmit bit stream are mapped onto a plurality of symbols s₁ through s_(T) chosen from a known constellation of available symbol values. The values of the symbols are used to populate an STC matrix S that represents how the symbols will be sent to the receiver. In particular each symbol will be chosen to represent one or more bits from the bit stream.

The STC matrix S is an (M×K) matrix, where M represents the number of antennas used by the transmitter, and K represents the number of symbols sent by each transmitter for a given set of mapped bits. For example, a MIMO system having a transmitter with four antennas (i.e., M=4), and for which each antenna transmits two symbols for a given set of mapped bits (i.e., K=2), the STC matrix S is a (4×2) matrix is written as:

$\begin{matrix} {S = {S_{42} = \begin{bmatrix} S_{1} & S_{5} \\ S_{2} & S_{6} \\ S_{3} & S_{7} \\ S_{4} & S_{8} \end{bmatrix}}} & (5) \end{matrix}$

s₁, s₂, s₃, s₄, s₅, s₆, s₇, and s₈ represent the symbols that the transmitter will be sending to the receiver. It will be understood, however, that this description can apply generally to situations in which M and K have values other than 4 and 2, respectively.

The STC matrix S can actually be considered as a collection of K STC arrays s_(t) of length M, each representing the transmissions from the M transmit antennas at a given time t. For example, the (4×2) STC matrix S₄₂ can be split into a (4×1) array s_(t1) that represents the transmissions of the M transmit antennas at a time t₁, and a (4×1) array s_(t2) that represents the transmissions of the M transmit antennas at a time t₂, as follows:

$\begin{matrix} {{s_{t\; 1} = \begin{bmatrix} s_{1} \\ s_{2} \\ s_{3} \\ s_{4} \end{bmatrix}},{and}} & (6) \\ {s_{t\; 2} = {\begin{bmatrix} s_{5} \\ s_{6} \\ s_{7} \\ s_{8} \end{bmatrix}.}} & (7) \end{matrix}$

In other words, at time t₁, the first transmitter antenna will transmit symbol s₁, the second transmitter antenna will transmit symbol s₂, the third transmitter antenna will transmit symbol s₃, and the fourth transmitter antenna will transmit symbol s₄. Then at time t₂, the first transmitter antenna will transmit symbol s₅, the second transmitter antenna will transmit symbol s₆, the third transmitter antenna will transmit symbol s₇, and the fourth transmitter antenna will transmit symbol s₈.

In some embodiments, the symbols s₁, s₂, s₃, s₄, s₅, s₆, s₇, and s₈ can be separate symbols, each representing one or more bits of data. However, in alternate embodiments one or more of the symbols in the STC matrix S can be a copy of another encoded symbol or derived from another signal and thereby providing duplicate information within the STC matrix S and making the matrix of data more robust.

Thus, in one embodiment, each position in the STC matrix S is provided with its own symbol, and in another embodiment, the same symbol representing the same one or more bits, could be repeated in every location in the STC matrix S. In various other embodiments a number of symbols between one and the total matrix size can be encoded.

For example, one type of STC matrix S used in some embodiments for a (4×L) system (i.e., a 4 transmit antenna system) is described below. An example STC matrix S₄₂ is shown for a (4×2) system (i.e., a system with four transmit antennas and two receive antennas). In this example S₄₂ is shown as set forth in Equation (8):

$\begin{matrix} {{S_{42} = \begin{bmatrix} s_{1} & {- s_{2}^{*}} \\ s_{2} & s_{1}^{*} \\ s_{3} & {- s_{4}^{*}} \\ s_{4} & s_{3}^{*} \end{bmatrix}},} & (8) \end{matrix}$

where s₁*, s₂*, s₃*, and s₄* are the conjugates of the symbols s₁, s₂, s₃, and s₄, respectively.

In other words, to derive the STC matrix S₄₂, from the general STC matrix of equation (4), the following equalities are true:

s₅=−s₂*,  (9)

s₆=s₁*,  (10)

s₇=−s₄*, and  (11)

s₈=s₃*.  (12)

Similarly, for a (3×2) MIMO system, one STC matrix used in one embodiment is denoted as S₃₂ is denoted as:

$\begin{matrix} {{S_{32} = \begin{bmatrix} s_{1} & {- s_{2}^{*}} \\ s_{2} & s_{1}^{*} \\ s_{3} & {- s_{4}^{*}} \end{bmatrix}},} & (13) \end{matrix}$

with similar substitutions being made for the elements in a general (3×2) STC matrix S₃₂.

In both of these embodiments, a number of data bits are encoded into four separate symbols s₁, s₂, s₃, and s₄. The B-matrix S_(42B) for a (4×2) MIMO system is populated with the four original symbols, s₁, s₂, s₃, and s₄, as well as the symbol conjugates s₁* and s₃*, and the inverse symbol conjugates −s₂* and −s₄*. Similarly, the B-matrix S_(32B) for a (3×2) MIMO system is populated with the three original symbols, s₁, s₂, and s₃, as well as the symbol conjugate s₁*, and the inverse symbol conjugates −s₂* and −s₄*. Thus, for both of these examples, four symbols, each representing one or more bits, are space-time encoded into the STC matrix S.

Each of the N receiver antennas then receives each of the M transmitted signals along a respective signal path for each of the K time intervals. The signals received at the N receiver antennas over the K time intervals can thus be written as an (N×K) receive matrix Y as set forth in Equation ((14):

Y=HS+N  (14)

where H is the (L×M) channel matrix that represents the effect of the transmission channel on a transmitted signal, S is the (M×K) STC array representing the signals transmitted from the M transmitter antennas, and N is an (L×K) noise matrix indicating the noise components received at the L receiver antennas over the K time intervals.

For example, in an embodiment with two receiver antennas (i.e., L=2), and in which each transmitter antenna transmits two symbols for each set of mapped bits (i.e., K=2), Y and N can be represented as follows:

$\begin{matrix} {{Y = \begin{bmatrix} y_{1} & y_{3} \\ y_{2} & y_{4} \end{bmatrix}},{and}} & (15) \\ {N = {\begin{bmatrix} n_{1} & n_{3} \\ n_{2} & n_{4} \end{bmatrix}.}} & (16) \end{matrix}$

where y₁ and y₂ are the signals received at a first and second receiver antennas, respectively, at a first time interval, and y₃ and y₄ are the signals received at the first and second receiver antennas, respectively, at a second time interval; and where n₁ and n₂ are noise components received at a first and second receiver antennas, respectively, at a first time interval, and n₃ and n₄ are noise components received at the first and second receiver antennas, respectively, at a second time interval. The same concepts applied to 4×2 and 3×2 systems be extended to apply to systems in which a larger number of receive antennas are used.

The receive matrix Y is decoded to retrieve the encoded data bits typically with the objective of minimizing the bit error rate (BER), packet error rate (PER), or other some other signal quality measurement.

The STC decoder 112 decodes the received signal matrix Y to extract the transmitted symbols s. In at least one embodiment, the STC decoder 112 decodes received signal matrix Y using minimum mean square estimation with successive interference cancellation (MMSE-SIC).

Referring to FIGS. 1 and 2, the STC decoder 112 decodes the received signal vector y in accordance with the MMSE-SIC decoding process 200. To decode received signal vector y, operation 202 obtains the MMSE least mean square (LMS) estimate of the transmitted symbol s_(i) with the highest received SNR. Operation 204 quantizes the estimate of the transmitted symbol {tilde over (s)}_(i) with the highest received SNR to the nearest value in the symbol constellation, such as a QPSK constellation. Operation 206 subtracts the effect of the quantized symbol {tilde over (s)}_(i) from the vector y of received signals and repeats operation 202 until decision operation 208 determines that all symbols in vector s have been decoded. Once all symbols in vector s have been decoded, block 210 indicates that operation 200 resets and repeats for the next vector s.

Following is a more detailed description of MMSE-SIC decoding process 200.

Assume that s and n are zero mean, spatially white vectors and uncorrelated to each other. Then, the linear MMSE estimate of s is given by

ŝ=(σ² I+{tilde over (H)} ^(H) {tilde over (H)})⁻¹ {tilde over (H)} ^(H) y  (17)

The linear estimator matrix is denoted as A=(σI+{tilde over (H)}^(H){tilde over (H)})⁻¹{tilde over (H)}^(H). The i^(th) throw of A is called the i^(th) MMSE nulling vector. The error covariance matrix is given by

R=P ⁻¹=(σ² I+{tilde over (H)} ^(H) {tilde over (H)}) ⁻¹.  (18)

where P⁻¹ represents the matrix inverse of the matrix P.

The symbol ŝ_(i) with the highest received SNR in symbol vector s corresponds to the element with the lowest value of error covariance given by R_(ii). “I” represents an identify matrix, and the “H” superscript indicates a Hermitian matrix.

Assuming the number N of symbols in symbol vector s equals 4 and that the highest SNR symbol corresponds to symbol ŝ₄, MMSE-SIC decoding process 200 determines a fairly accurate estimate of symbol s₄ by quantizing symbol s₄ and denoting it as an estimated symbol ŝ₄. Then, assuming that we have correct detection, the effect of symbol s₄.

$\begin{matrix} {{{y - {{\overset{\sim}{h}}_{4}{\overset{\sim}{s}}_{4}}} = {{{\overset{\sim}{H}}^{(3)}s^{(3)}} + n}}{where}} & (19) \\ {{\overset{\sim}{H}}^{(3)} = {{\left\lbrack {{\overset{\sim}{h}}_{1}{\overset{\sim}{h}}_{2}{\overset{\sim}{h}}_{3}} \right\rbrack s^{(3)}} = \begin{pmatrix} s_{1} \\ s_{2} \\ s_{3} \end{pmatrix}}} & (20) \end{matrix}$

and {tilde over (h)}_(i) is the i^(th) column of {tilde over (H)}. The solution to equation (19) requires computing the inverse of P⁽³⁾=(σI+{tilde over (H)}^((3)H){tilde over (H)}⁽³⁾).

Thus, MMSE-SIC decoding process 200 requires computing the inverses of P^((i)) and performing N−1 recursive procedures for each s_(i) not having the lowest SNR. Computing the inverses of P^((i)) and performing N−1 recursive procedures is computationally expensive and may not be practical for real-time signal processing. The computation complexity has been estimated to equal 0.66t³+7r·t²+2r²t.

The channel decoder/demodulator 114 determines an estimate of signal x from the decoded, estimated symbols ŝ. In at least one embodiment, channel decoder/demodulator 114 essentially uses the reverse processes of modulator 105 to determine the estimated signal {circumflex over (x)}.

Accordingly, there is a need for a more efficient system and process for decoding received signals in a MIMO wireless communication system.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerous objects, features and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference number throughout the several figures designates a like or similar element.

FIG. 1 (labeled prior art) depicts a wireless, multiple input, multiple output (MIMO) communication system.

FIG. 2 (labeled prior art) depicts a minimum mean-square-error-successive interference cancellation process.

FIG. 3 depicts a MIMO communication system that includes an STC decoder that decodes data symbols in pairs.

FIG. 4 depicts an MMSE-SIC, symbol pairs decoding process.

FIG. 5 depicts a 4×2 STC symbol-pair decoding process.

FIG. 6 depicts a 4×2 MIMO matrix B-Bit-error-rate comparison of MMSE, MMSE-SIC and maximum likelihood (ML) decoders with an STC symbol-pair decoder

FIG. 7 depicts a 4×2 MIMO matrix B-Block-error-rate comparison of conventional MMSE, MMSE-SIC and ML decoders with an STC symbol-pair decoder.

FIG. 8 depicts a 3×2 STC symbol-pair decoding process.

FIG. 9 depicts a 3×2 MIMO matrix B-Bit-error-rate comparison of MMSE, MMSE-SIC and maximum likelihood (ML) decoders with an STC symbol-pair decoder

FIG. 10 depicts a 3×2 MIMO matrix B-Block-error-rate comparison of MMSE, MMSE-SIC and ML decoders with an STC symbol-pair decoder.

FIG. 11 depicts a 2×2 STC symbol-pair decoding process.

FIG. 12 depicts for a 2×2 MIMO matrix B-Bit-error-rate comparison of MMSE, MMSE-SIC and ML decoder with an STC symbol-pair decoder.

FIG. 13 depicts for a 2×2 MIMO matrix B-Block-error-rate comparison of MMSE, MMSE-SIC and ML decoders with an STC symbol-pair decoder.

FIG. 14 depicts a mapping of a QPSK constellation to actual transmitted symbols s.

DETAILED DESCRIPTION

A MIMO wireless communication system and method reduces the number of recursive operations when decoding received data symbols by decoding the data symbols in pairs rather than on a per symbol basis. Decoding in pairs is facilitated by the determination that errors between selected pairs of data symbols are uncorrelated and identically distributed with a determined variance. Additionally, the system and method can order the pairs and provide decoding rules that result in an insignificant loss of performance for a wide range of signal-to-noise ratios (SNRs). Furthermore, the system and method exploit the structure of the error covariance matrix to reduce computational demands.

FIG. 3 depicts MIMO communication system 300 that includes an STC decoder that decodes data symbols in pairs to reduce recursive operations. In at least one embodiment, the MIMO communication 300 functions identically to the previously described MIMO communication system 100 except for the STC symbol-pair decoder 304. In at least one embodiment, the STC symbol-pair decoder 304 decodes pairs of data symbols in an STC coded matrix S of received data symbols using an MMSE-SIC, symbol pairs decoding process 400 (FIG. 4).

The STC pair decoders for three example MIMO configurations given by 4×2, 3×2 and 2×2 with STCs having a rate of two symbols/period are described herein.

FIG. 4 depicts one embodiment of a MMSE-SIC, symbol pairs decoding process 400. Details of each operation are described in more detail following paragraphs. Following is a general overview of the MMSE-SIC, symbol pairs decoding process 400. In operation 402, the MIMO demodulator/receiver 110 receives a signal Y on r antennas, wherein r is an integer greater than one (1), wherein received signal Y represents a plurality of encoded data symbols s, s is encoded using a space time code matrix S, s={s₁, s₂, s₃, . . . s_(T)}, and T represents a number of data symbols received during a time t. In operation 404, the STC symbol-pair decoder 304 identifies, using a predetermined criteria, one of the pairs {s_(a), s_(b)} of data symbols s from T/2*(T−1)/2 pairs if T is odd from data symbols s. In at least one embodiment, the predetermined criteria is used to select the pair {s_(a), s_(b)} of data symbols that maximizes the SNR of the decoded data symbols s. In operation 406, the STC decoder 304 decodes the identified pair {s_(a), s_(b)} of data symbols before decoding any remaining pair of data symbols s. In operation 408, STC decoder 304 removes a contribution from the decoded pair {s_(a), s_(b)} from received signal Y. In at least one embodiment, the contributions of each symbol s_(a) and s_(b) are the values of symbol s_(a) and s_(b). In at least one embodiment, the contributions of each symbol s_(a) and s_(b) are ŝ₃ and ŝ₄, where ŝ₃ and ŝ₄ represent the respective quantized values of the symbols s_(a) and s_(b). In operation 410, if any pairs of data symbols have not been decoded from the T/2 pairs (T−1)/2 pairs if T is odd), MMSE-SIC, symbol pairs decoding process 400 returns to operation 402 to decode a next pair of data symbols. Otherwise, if T is odd, a single symbol remains to be decoded. Thus, if T is odd in operation 412, operation 414 decodes the remaining symbol. If T is even or after completing operation 414 if T is odd, in operation 416, MMSE-SIC, symbol pairs decoding process 400 resets to decode a next set of symbols s. In another embodiment, if T is odd, the symbol not paired with another symbol can be decoded before or after any symbol pair decoding.

The MIMO communication system 300 and MMSE-SIC, symbol pairs decoding process 400 reduces the complexity of decoding symbol pairs by efficiently computing the inverse of the matrix P^((i)) and reducing recursion operations in successive interference cancellation.

The matrix P^((i)) has the following structure (since the matrix is Hermitian):

$\begin{matrix} {P = {\begin{pmatrix} A & C \\ C^{H} & B \end{pmatrix}.}} & (21) \end{matrix}$

By defining:

D=B−C ^(H) A ⁻¹ C,  (22)

if matrices A and D are non-singular, then the inverse of matrix P has the following closed form:

$\begin{matrix} {R = {P^{- 1} = {\begin{pmatrix} {A^{- 1} + {A^{- 1}{CD}^{- 1}C^{H}A^{- 1}}} & {{- A^{- 1}}{CD}^{- 1}} \\ {{- D^{- 1}}C^{H}A^{- 1}} & D^{- 1} \end{pmatrix}.}}} & (23) \end{matrix}$

Note that the error covariance matrix P⁻¹ has a structure similar to P in (18). At least one embodiment of the MIMO communication system 300 efficiently implements error covariance matrix P⁻¹ by exploiting the structure of the equivalent channel matrix {tilde over (H)}.

The MIMO communication system 300 supports various STC matrix S dimensions. In 4×2 and 3×2 STC decoder 304 embodiments, the MIMO communication system 300 exploits the biorthogonality of estimated channel matrix {tilde over (H)}. For the 2×2 case, equivalent channel matrix {tilde over (H)} does not initially indicate biorthogonality. For the 2×2 case, in at least one embodiment, the 2×2 STC decoder 304 performs a linear mapping of symbol vector s to develop a structure in the resulting equivalent channel matrix {tilde over (H)}, which is exploited to obtain an efficient symbol-pair decoding process.

In the STC illustrative decoding problems described herein, inversions of 4×2, 3×2, and 2×2 symbol matrices S are used by the MMSE-SIC symbol pairs decoding process 400. Reduction in order of recursion is obtained by decoding symbols in pairs instead of one symbol ŝ_(i) per recursion operation. Performing MMSE-SIC, symbol pairs decoding process 400 in pairs can result in a loss of quality. At least one embodiment of the MMSE-SIC, symbol pairs decoding process 400 orders symbol pairs and includes rules for decoding order that result in improved SNR relative to unordered symbol pair decoding.

STC Symbol-Pair Decoder 304 for a 4×2 MIMO Matrix

The STC symbol-pair decoder 304 can be configured to decode a variety of k×m dimensional signals Y. FIG. 5 depicts a 4×2 STC symbol-pair decoding process 500.

Referring to FIGS. 3 and 5, the signal Y received by subscriber station 104 is represented by:

$\begin{matrix} {{Y = {{HS} + N}}{where}{{Y = \begin{pmatrix} y_{1} & y_{2} & y_{3} & y_{4} \\ y_{5} & y_{6} & y_{7} & y_{8} \end{pmatrix}},{H = \begin{pmatrix} h_{1} & h_{2} & h_{3} & h_{4} \\ h_{5} & h_{6} & h_{7} & h_{8} \end{pmatrix}},}} & (24) \\ {S = \begin{pmatrix} s_{1} & {- s_{2}^{*}} & s_{5} & {- s_{6}^{*}} \\ s_{2} & s_{1}^{*} & s_{6} & s_{5}^{*} \\ s_{3} & {- s_{4}^{*}} & s_{7} & {- s_{8}^{*}} \\ s_{4} & s_{3}^{*} & s_{8} & s_{7}^{*} \end{pmatrix}} & (25) \end{matrix}$

The asterisk “*” indicates a complex conjugate. The STC matrix S is defined as the STC “matrix B” coding scheme in the Institute of Electrical and Electronic Engineers (IEEE) 802.16e specification. STC symbol-pair decoder 304 can be modified to accommodate other STC coding schemes. STC symbol-pair decoder 304 can decode in blocks of two time periods i.e. s₁,s₂,s₃,s₄ are present only in the first two time periods (columns 1 and 2) and similarly s₅,s₆,s₇,s₈ are present only in the last two time periods (columns 3 and 4). For each of the two time periods, STC matrix S code can be separated in two parts of two symbols each. The particular STC matrix for the 4×2, 3×2, 2×2, and all other systems is a matter of design choice. For example, equivalent STC matrices can be used.

The received symbols in the first two periods can be written in vector form as:

$\begin{matrix} {{y = {{\overset{\sim}{H}s} + n}}{{where}\text{:}}} & (26) \\ {{y = \begin{pmatrix} y_{1} \\ y_{2}^{*} \\ y_{5} \\ y_{6}^{*} \end{pmatrix}};{\overset{\sim}{H} = \begin{pmatrix} h_{1} & h_{2} & h_{3} & h_{4} \\ h_{2}^{*} & {- h_{1}^{*}} & h_{4}^{*} & {- h_{3}^{*}} \\ h_{5} & h_{6} & h_{7} & h_{8} \\ h_{6}^{*} & {- h_{5}^{*}} & h_{8}^{*} & {- h_{7}^{*}} \end{pmatrix}};{s = {\begin{pmatrix} s_{1} \\ s_{2} \\ s_{3} \\ s_{4} \end{pmatrix}.}}} & (27) \end{matrix}$

The matrix P has the structure (21) where:

$\begin{matrix} {{{A = {\gamma_{a}I_{2}}};{\gamma_{a} = {{h_{1}}^{2} + {h_{2}}^{2} + {h_{5}}^{2} + {h_{6}}^{2} + \sigma^{2}}}},} & (28) \\ {{{B = {\gamma_{b}I_{2}}};{\gamma_{b} = {{h_{3}}^{2} + {h_{4}}^{2} + {h_{7}}^{2} + {h_{8}}^{2} + \sigma^{2}}}},} & (29) \\ {{C = \begin{pmatrix} \alpha_{1} & \alpha_{2} \\ {- \alpha_{2}^{*}} & \alpha_{1}^{*} \end{pmatrix}},} & (30) \\ {{\alpha_{1} = {{h_{1}^{*}h_{3}} + {h_{2}h_{4}^{*}} + {h_{5}^{*}h_{7}} + {h_{6}h_{8}^{*}}}},{and}} & (31) \\ {\alpha_{2} = {{h_{1}^{*}h_{4}} - {h_{2}h_{3}^{*}} + {h_{5}^{*}h_{8}} - {h_{6}{h_{7}^{*}.}}}} & (32) \end{matrix}$

Note that C is a unitary matrix, i.e.

C ^(H) C=γ _(c) I ₂; γ_(c)=|α₁|²+|α₂|².  (33)

From Equations (28), (29) and (33), matrix D is diagonal i.e.:

$\begin{matrix} {{D = {\left( \frac{\gamma}{\gamma_{a}} \right)I_{2}}};\mspace{31mu} {\gamma = {{\gamma_{a}\gamma_{b}} - {\gamma_{c}.}}}} & (34) \end{matrix}$

The matrices A⁻¹+A⁻¹CD⁻¹C^(H)A⁻¹ and D⁻¹ are both diagonal where:

$\begin{matrix} {{A^{- 1} + {A^{- 1}{CD}^{- 1}C^{H}A^{- 1}}} = {{\left( {\frac{1}{\gamma_{a}} + \frac{\gamma_{c}}{\gamma_{a}\gamma}} \right)I_{2}} = {\frac{\gamma_{b}}{\gamma}{I.}}}} & (35) \end{matrix}$

The diagonal property of matrix D reflects the biorthogonal structure of equivalent channel matrix {tilde over (H)} and implies that errors s₁−ŝ₁ and s₂−ŝ₂ are uncorrelated and identically distributed with variance

$\begin{matrix} {{E\left( {{s_{1} - {\hat{s}}_{1}}}^{2} \right)} = {{E\left( {{s_{2} - {\hat{s}}_{2}}}^{2} \right)} = {\frac{\gamma_{b}}{\gamma}.}}} & (36) \end{matrix}$

Similarly, the errors s₃−ŝ₃ and s₄−ŝ₄ are also uncorrelated and identically distributed with variance:

$\begin{matrix} {{E\left( {{s_{3} - {\hat{s}}_{3}}}^{2} \right)} = {{E\left( {{s_{4} - {\hat{s}}_{4}}}^{2} \right)} = {\frac{\gamma_{a}}{\gamma}.}}} & (37) \end{matrix}$

Because the errors are uncorrelated, STC symbol-pair decoder 304 can decode the symbol data in pairs using MMSE decoding. To reduce SNR quality losses, in at least one embodiment, STC symbol-pair decoder 304 decodes the symbol pairs in a particular order in accordance with one or more metrics. The particular metric or metrics are a matter of design choice. In at least one embodiment, STC symbol-pair decoder 304 decodes the symbol pair first that corresponds to the highest received SNR, the lowest error covariance, the highest SNR plus interference ratio, or some other performance measure as determined by design choice. From Equations (36) and (37), the decoding order is determined by: if γ_(a)>γ_(b), first decode the pair (s₁,s₂), else decode the pair (s₃,s₄). Equation (17) can be used to decode the symbol s_(i).

Assuming γ_(a)>γ_(b), symbols (s₃,s₄) are determined as follows: (from row 2, column 1 and row 2, column 2 of P⁻¹ equation (23)):

$\quad\begin{matrix} \begin{matrix} {\begin{pmatrix} {\hat{s}}_{3} \\ {\hat{s}}_{4} \end{pmatrix} = {\left( {{- D^{- 1}}C^{H}A^{- 1}D^{- 1}} \right){\overset{\sim}{H}}^{H}y}} \\ {= {\frac{1}{\gamma}\begin{pmatrix} {- \alpha_{1}^{*}} & \alpha_{2} & \gamma_{a} & 0 \\ {- \alpha_{2}^{*}} & {- \alpha_{1}} & 0 & \gamma_{a} \end{pmatrix}{\overset{\sim}{H}}^{H}{y.}}} \end{matrix} & (38) \end{matrix}$

The estimated symbols are then quantized to obtain (ŝ₃,ŝ₄). The particular quantization process is a matter of design choice. In at least one embodiment, STC symbol-pair decoder 304 maps estimated symbols ŝ₃ and ŝ₄ to a QPSK constellation. The contribution of the decoded symbol pairs are removed from the equivalent received signal vector y to obtain the reduced order problem:

$\quad\begin{matrix} \begin{matrix} {y^{(2)} = {y - {{\overset{\sim}{h}}_{3}{\overset{\sim}{s}}_{3}} - {{\overset{\sim}{h}}_{4}{\overset{\sim}{s}}_{4}}}} \\ {= {{{\overset{\sim}{H}}^{(2)}s^{(2)}} + n}} \\ {= {{\left\lbrack {{\overset{\sim}{h}}_{1}{\overset{\sim}{h}}_{2}} \right\rbrack s^{(2)}} + n}} \\ {= {{\begin{pmatrix} h_{1} & h_{2} \\ h_{2}^{*} & {- h_{1}^{*}} \\ h_{5} & h_{6} \\ h_{6}^{*} & {- h_{5}^{*}} \end{pmatrix}\begin{pmatrix} s_{1} \\ s_{2} \end{pmatrix}} + {n.}}} \end{matrix} & (39) \end{matrix}$

Since {tilde over (H)}⁽²⁾ is an orthogonal STC matrix, decoding of the remaining estimated signal pairs (ŝ₁,ŝ₂) is from:

$\begin{matrix} {\begin{pmatrix} {\overset{\sim}{s}}_{1} \\ {\overset{\sim}{s}}_{2} \end{pmatrix} = {{{\overset{\sim}{H}}^{{(2)}H}{\overset{\sim}{y}}^{(2)}} = {{{{\overset{\sim}{H}}^{{(2)}H}{\overset{\sim}{H}}^{(2)}s^{(2)}} + {{\overset{\sim}{H}}^{{(2)}H}n}} = {{\gamma_{a}\begin{pmatrix} s_{1} \\ s_{2} \end{pmatrix}} + {{\overset{\sim}{H}}^{{(2)}H}{n.}}}}}} & (40) \end{matrix}$

If γ_(a)>γ_(b), then the symbol pair (s₁,s₂) is decoded first using (4). Rows 1 and 2 of error covariance matrix P⁻¹ are used to obtain (ŝ₁,ŝ₂)

$\quad\begin{matrix} \begin{matrix} {\begin{pmatrix} {\hat{s}}_{1} \\ {\hat{s}}_{2} \end{pmatrix} = {\left( {A^{- 1} + {A^{- 1}{CD}^{- 1}C^{H}A^{- 1}} - {A^{- 1}{CD}^{- 1}}} \right){\overset{\sim}{H}}^{H}y}} \\ {= {\frac{1}{\gamma}\begin{pmatrix} \gamma_{b} & 0 & {- \alpha_{1}} & \alpha_{2}^{*} \\ 0 & \gamma_{a} & {- \alpha_{2}} & {- \alpha_{1}^{*}} \end{pmatrix}{\overset{\sim}{H}}^{H}y}} \end{matrix} & \begin{matrix} (41) \\ (42) \end{matrix} \end{matrix}$

The estimated symbols are then quantized to obtain ({tilde over (s)}₁,{tilde over (s)}₂). Again, the particular quantization process is a matter of design choice and, in at least one embodiment, STC symbol-pair decoder 304 maps estimated symbols ŝ₁ and ŝ₂ to a QPSK constellation. The contribution of the decoded symbol pairs are removed from the equivalent received signal vector {tilde over (y)} to obtain the reduced order problem:

$\quad\begin{matrix} \begin{matrix} {y^{(2)} = {y - {{\overset{\sim}{h}}_{1}{\overset{\sim}{s}}_{1}} - {{\overset{\sim}{h}}_{2}{\overset{\sim}{s}}_{2}}}} \\ {= {{{\overset{\sim}{H}}^{(2)}s^{(2)}} + n}} \\ {= {{\left\lbrack {{\overset{\sim}{h}}_{3}{\overset{\sim}{h}}_{4}} \right\rbrack s^{(2)}} + n}} \\ {= {{\begin{pmatrix} h_{3} & h_{4} \\ h_{4}^{*} & {- h_{3}^{*}} \\ h_{7} & h_{8} \\ h_{8}^{*} & {- h_{7}^{*}} \end{pmatrix}\begin{pmatrix} s_{3} \\ s_{4} \end{pmatrix}} + {n.}}} \end{matrix} & (43) \end{matrix}$

Since {tilde over (H)}⁽²⁾ is an orthogonal STC matrix, decoding of the remaining estimated signal pairs ({tilde over (s)}₃,{tilde over (s)}₄) is from:

$\begin{matrix} {\begin{pmatrix} {\hat{s}}_{3} \\ {\hat{s}}_{4} \end{pmatrix} = {{{\overset{\sim}{H}}^{{(2)}H}y^{(2)}} = {{{{\overset{\sim}{H}}^{{(2)}H}{\overset{\sim}{H}}^{(2)}s^{(2)}} + {{\overset{\sim}{H}}^{{(2)}H}n}} = {{\gamma_{b}\begin{pmatrix} s_{3} \\ s_{4} \end{pmatrix}} + {{\overset{\sim}{H}}^{{(2)}H}{n.}}}}}} & (44) \end{matrix}$

Thus, the recursion is reduced from order 4 to order 2, which significantly reduces computational requirements. Additionally, the structure of error covariance matrix P⁻¹ allows process 500 to symbol-pair decode symbols in STC matrix S by computing the elements of error covariance matrix P⁻¹ in an efficient manner as described above. In comparison, conventional decoding processes use singular value decomposition or a square root method which have significantly higher complexity.

FIG. 5 depicts an embodiment of a 4×2 STC symbol-pair decoding process 500. Process 500 also depicts the simulated multiply and accumulate operations for each operation. Operation 502 determines A and determines γ_(a) from (15) [4 multiply-accumulate operations (“macs”)]. Operation 504 determines B and determines γ_(b) from (16) [4 macs]. Operation 506 determines C, α₁, and α₂ from (18) and (19) [8 macs]. Operation 508 determines C^(H)C and determines γ_(c) [2 macs]. Operation 510 determines {tilde over (H)}^(H){tilde over (y)} [16 macs]. Operation 512 determines if γ_(b)>γ_(a). If “yes” in operation 512, operation 514 decodes the symbol pair (s₃,s₄).

If γ_(b)>γ_(a); operation 516 determines γ_(b) from (29) [1 mac]. Operation 518 determines (ŝ₃,ŝ₄) from (38) (ignoring the scaling constant) [6 macs]. Operation 520 quantizes ({tilde over (s)}₃,{tilde over (s)}₄) by scaling the constellation by γ [3×2=6 macs (at most for 64 quadrature amplitude modulation]. Operation 522 determines y⁽²⁾ from (39) [8 macs]. Operation 524 determines ({tilde over (s)}₁,{tilde over (s)}₂) from (40) [8 macs]. The total macs for 4×2 STC symbol-pair decoding process 500 is 63 macs. If γ_(b)<γ_(a), in operation 512, operation 526 decodes the symbol pair (s₁,s₂). Operation 528 determines γ from (28) [1 mac]. Operation 530 determines ({tilde over (s)}₁,{tilde over (s)}₂) from (41) (ignoring the scaling constant) [6 macs]. Operation 532 quantizes ({tilde over (s)}₁,{tilde over (s)}₂) by scaling the constellation by γ [3×2=6 macs (at most for 64 quadrature amplitude modulation]. Operation 534 determines {tilde over (y)}⁽²⁾ from (43) [8 macs]. Operation 536 determines ({tilde over (s)}₃,{tilde over (s)}₄) from (44) [8 macs].

If only MMSE is used without successive interference cancellation, then operations 522 and 524 are not performed. Estimating ({tilde over (s)}₁,{tilde over (s)}₂) adds complexity since columns 1 and 2 of P⁻¹ and estimation are used which is about 1+6=7 macs. So, total complexity for only MMSE decoding is 60−16+7=51 macs.

Comparison simulations are depicted in FIGS. 6 and 7 for a narrowband MIMO channel with zero temporal correlation and spatially independent, identically distributed links for uncoded data symbols from a QPSK constellation. It is assumed that the channel matrix H is perfectly known at the receiver. FIG. 6 depicts the comparison of STC symbol-pair decoder 304 (also referred to as the MMSE-SIC-2 decoder) to the MMSE, MMSE-SIC, and ML detectors. The STC symbol-pair decoder 304 demonstrates negligible loss compared to the MMSE-SIC decoder even though the symbols are decoded and canceled in pairs instead of symbol by symbol decoding and cancellation as in the conventional MMSE-SIC decoding process. Thus, STC symbol-pair decoder 304 provides a considerable complexity advantage for a negligible performance loss at 10⁻² BER and 0.5 dB at 10⁻³ BER. Comparing the STC symbol-pair decoder 304 using MMSE-SIC versus MMSE only, the advantage of using successive interference cancellation is clear—the gain is about 1.75 dB at 10⁻² BER and 3 dB at 10⁻³ BER. In addition, the MMSE-SIC and MMSE-SIC-2 detectors have a 1 dB loss compared to the (optimal) ML detector at 10⁻² BER and 2.5 dB at 10⁻³ BER.

FIG. 7 depicts a comparison/performance chart 700 for a 4×2 MIMO matrix B-Block-error-rate comparison of conventional MMSE, MMSE-SIC and ML decoders with STC symbol-pair decoder 304 for the space-time code block error rate with similar observations as described in association with FIG. 6.

Assuming an operating point of 10⁻², the MMSE-SIC STC symbol-pair decoder 304 using successive interference cancellation is within 1 dB of the optimal detector.

STC Symbol-Pair Decoder For 3×2 MIMO STC Matrix B

Referring to FIGS. 3 and 8, STC pair decoder 304 can also be configured to decode a 3×2 MIMO STC matrix S. For a 3×2 MIMO STC matrix S, the signal Y received by subscriber station 302 is represented by:

$\begin{matrix} {{Y = {{HS} + N}}{{where}:}} & (45) \\ {{Y = \begin{pmatrix} y_{1} & y_{2} & y_{3} & y_{4} \\ y_{5} & y_{6} & y_{7} & y_{8} \end{pmatrix}},} & (46) \\ {{H = \begin{pmatrix} h_{1} & h_{2} & h_{3} \\ h_{5} & h_{6} & h_{7} \end{pmatrix}},} & (47) \\ {S = {\begin{pmatrix} \sqrt{\frac{3}{4}} & 0 & 0 \\ 0 & \sqrt{\frac{3}{4}} & 0 \\ 0 & 0 & \sqrt{\frac{3}{2}} \end{pmatrix}{\begin{pmatrix} {\overset{\sim}{s}}_{1} & {- {\overset{\sim}{s}}_{2}^{*}} & {\overset{\sim}{s}}_{5} & {- {\overset{\sim}{s}}_{6}^{*}} \\ {\overset{\sim}{s}}_{2} & {\overset{\sim}{s}}_{1}^{*} & {\overset{\sim}{s}}_{6} & {\overset{\sim}{s}}_{5}^{*} \\ {\overset{\sim}{s}}_{7} & {- {\overset{\sim}{s}}_{8}^{*}} & {\overset{\sim}{s}}_{3} & {- {\overset{\sim}{s}}_{4}^{*}} \end{pmatrix}.}}} & (48) \end{matrix}$

In Equation (32) the following notation is used:

{tilde over (s)} ₁ =s _(1I) +js _(3Q) ; {tilde over (s)} ₂ =s _(2I) +js _(4Q) ; {tilde over (s)} ₃ =s _(3I) +js _(1Q) ; {tilde over (s)} ₄ =s _(4I) +js _(2Q);  (49)

{tilde over (s)} ₅ =s _(5I) +js _(7Q) ; {tilde over (s)} ₆ =s _(6I) +js _(8Q) ; {tilde over (s)} ₇ =s _(7I) +js _(5Q) ; {tilde over (s)} ₈ =s _(8I) +js _(6Q);  (50)

where s_(i)=s_(iI)+js_(iQ) and the subscripts “I” and “Q” refer to the real and imaginary parts, respectively, of the complex value s_(i).

Decoding of s_(i) can be equivalently accomplished by decoding {tilde over (s)}_(i). Similar to the 4×2 case, decoding proceeds by noting that the STC code of Equation (48) can be separated into two parts of two symbols each, i.e. {tilde over (s)}₁,{tilde over (s)}₂,{tilde over (s)}₇,{tilde over (s)}₈ are present only in the first two time periods and similarly {tilde over (s)}₇,{tilde over (s)}₈,{tilde over (s)}₅,{tilde over (s)}₆ are present only in the last two time periods. Thus, STC symbol-pair decoder 304 can decode in blocks of two time periods. However, unlike the 4×2 case, in at least one embodiment, all of the {tilde over (s)}_(i), i=1, . . . , 8, are decoded to obtain all symbols s_(i), i=1, . . . , 8.

Re-writing the received signal Y by absorbing the diagonal matrix of the STC code in Equation (48) into the channel matrix H gives:

$\begin{matrix} {{Y = {{HS} + N}}{where}} & (51) \\ {{H = \begin{pmatrix} h_{1} & h_{2} & h_{3} \\ h_{5} & h_{6} & h_{7} \end{pmatrix}},{S = \begin{pmatrix} {\overset{\sim}{s}}_{1} & {- {\overset{\sim}{s}}_{2}^{*}} & {\overset{\sim}{s}}_{5} & {- {\overset{\sim}{s}}_{6}^{*}} \\ {\overset{\sim}{s}}_{2} & {\overset{\sim}{s}}_{1}^{*} & {\overset{\sim}{s}}_{6} & {\overset{\sim}{s}}_{5}^{*} \\ {\overset{\sim}{s}}_{7} & {- {\overset{\sim}{s}}_{8}^{*}} & {\overset{\sim}{s}}_{3} & {- {\overset{\sim}{s}}_{4}^{*}} \end{pmatrix}}} & (52) \\ {{h_{1} = {\sqrt{\frac{3}{4}}h_{1}}};{h_{2} = {\sqrt{\frac{3}{4}}h_{2}}};{h_{3} = {\sqrt{\frac{3}{2}}h_{3}}};{h_{5} = {\sqrt{\frac{3}{4}}h_{5}}};{h_{6} = {\sqrt{\frac{3}{4}}h_{6}}};{h_{7} = {\sqrt{\frac{3}{2}}h_{7}}}} & (53) \end{matrix}$

The received symbols in the first two periods can be written in vector form as

$\begin{matrix} {{y = {{\overset{\sim}{H}\overset{\sim}{s}} + n}}{{where}\text{:}}} & (54) \\ {{y = \begin{pmatrix} y_{1} \\ y_{2}^{*} \\ y_{5} \\ y_{6}^{*} \end{pmatrix}};{\overset{\sim}{H} = \begin{pmatrix} h_{1} & h_{2} & h_{3} & 0 \\ h_{2}^{*} & {- h_{1}^{*}} & 0 & {- h_{3}^{*}} \\ h_{5} & h_{6} & h_{7} & 0 \\ h_{6}^{*} & {- h_{5}^{*}} & 0 & {- h_{7}^{*}} \end{pmatrix}};{\overset{\sim}{s} = {\begin{pmatrix} {\overset{\sim}{s}}_{1} \\ {\overset{\sim}{s}}_{2} \\ {\overset{\sim}{s}}_{7} \\ {\overset{\sim}{s}}_{8} \end{pmatrix}.}}} & (55) \end{matrix}$

Comparing (27) and (55), the 3×2 symbol-pair decoding process 800 (FIG. 8) is similar to the previously described 4×2 decoding process where h₄=h₈=0 and the other h_(i)'s are scaled as in (53). Accordingly, for the 3×2 STC matrix S:

$\begin{matrix} {{{A = {\gamma_{a}I_{2}}};{\gamma_{a} = {{h_{1}}^{2} + {h_{2}}^{2} + {h_{5}}^{2} + {h_{6}}^{2} + \sigma^{2}}}},} & (56) \\ {{{B = {\gamma_{b}I_{2}}};{\gamma_{b} = {{h_{3}}^{2} + {h_{7}}^{2} + \sigma^{2}}}},} & (57) \\ {{C = \begin{pmatrix} \alpha_{1} & \alpha_{2} \\ {- \alpha_{2}^{*}} & \alpha_{1}^{*} \end{pmatrix}},} & (58) \\ {{\alpha_{1} = {{h_{1}^{*}h_{3}} + {h_{5}^{*}h_{7}}}},{and}} & (59) \\ {\alpha_{2} = {{{- h_{2}}h_{3}^{*}} - {h_{6}h_{7}^{*}}}} & (60) \end{matrix}$

Otherwise, the 3×2 symbol-pair decoding process 800 is identical to the previously described 4×2 decoding process. Thus, the recursion is reduced from order 4 to order 2, which significantly reduces computational requirements. Additionally, the structure of error covariance matrix P⁻¹ allows the 3×2 STC symbol-pair decoding process 800 to symbol-pair decode symbols in STC matrix S of Equation (48) by computing only the diagonal elements of error covariance matrix P⁻¹.

FIG. 8 depicts an example 3×2 STC symbol-pair decoding process 800. Process 800 also depicts the macs for each operation. Operation 802 determines the channel matrix H from (52) [6 macs]. Operation 804 determines A and determines γ_(a) from (56) [4 macs]. Operation 806 determines B and determines γ_(b) from (41) [2 macs]. Operation 808 determines elements of C, α₁, and α₂ from (59) and (60), respectively [4 macs]. Operation 810 determines C^(H)C and determines γ_(c) from (33) [2 macs]. Operation 812 determines {tilde over (H)}^(H)y [16 macs].

As with 4×2 STC symbol-pair decoding process 500, to minimize quality losses, in at least one embodiment, the 3×2 STC symbol-pair decoding process 800 first decodes the symbol pair s in a particular order in accordance with a one or more metrics. The particular metric or metrics are a matter of design choice. In at least one embodiment, STC symbol-pair decoder 304 decodes the symbol pair first that corresponds to the highest received SNR, the lowest error covariance, the highest SNR plus interference ratio, or some other performance measure as determined by design choice. Thus, assuming that γ_(b)>γ_(a), and, thus, (s₇,s₈) are decoded first, then 3×2 STC symbol-pair decoding process 800 determines (ŝ₇,ŝ₈) as follows:

$\quad\begin{matrix} \begin{matrix} {\begin{pmatrix} {\hat{s}}_{7} \\ {\hat{s}}_{8} \end{pmatrix} = {\left( {{- D^{- 1}}C^{H}A^{- 1}D^{- 1}} \right){\hat{H}}^{H}y}} \\ {= {\frac{1}{\gamma}\begin{pmatrix} {- \alpha_{1}^{*}} & \alpha_{2} & \gamma_{a} & 0 \\ {- \alpha_{2}^{*}} & {- \alpha_{1}} & 0 & \gamma_{a} \end{pmatrix}{\overset{\sim}{H}}^{H}y}} \end{matrix} & \begin{matrix} (61) \\ (62) \end{matrix} \end{matrix}$

The estimated symbols ŝ₇ and ŝ₈ are then quantized to obtain ({tilde over (s)}₇,{tilde over (s)}₈). The particular quantization process is a matter of design choice. In at least one embodiment, STC symbol-pair decoder 304 maps estimated symbols ŝ₇ and ŝ₈ to a QPSK constellation.

The contribution of the decoded pairs are removed from the estimated received signal vector {tilde over (y)} to obtain the reduced order problem:

$\quad\begin{matrix} \begin{matrix} {y^{(2)} = {y - {{\overset{\sim}{h}}_{3}{\overset{\sim}{s}}_{7}} - {{\overset{\sim}{h}}_{4}{\overset{\sim}{s}}_{8}}}} \\ {= {{{\overset{\sim}{H}}^{(2)}s^{(2)}} + n}} \\ {= {{\left\lbrack {{\overset{\sim}{h}}_{1}{\overset{\sim}{h}}_{2}} \right\rbrack s^{(2)}} + n}} \\ {= {{\begin{pmatrix} h_{1} & h_{2} \\ h_{2}^{*} & {- h_{1}^{*}} \\ h_{5} & h_{6} \\ h_{6}^{*} & {- h_{5}^{*}} \end{pmatrix}\begin{pmatrix} s_{7} \\ s_{8} \end{pmatrix}} + {n.}}} \end{matrix} & (63) \end{matrix}$

If γ_(a)>γ_(b), then the symbol pair (s₁,s₂) is decoded first following the same pattern as the 4×2 STC symbol-pair decoding process 500 and the 3×2 symbol-pair decoding process 800.

Operation 814 determines γ from (34) [1 macs]. Operation 816 determines ({tilde over (s)}₇,{tilde over (s)}₈) from (62) (ignoring the scaling constant) [6 macs]. Operation 818 quantizes ({tilde over (s)}₇,{tilde over (s)}₈) by scaling constellation by γ [3×2=6 macs (at most for 64 quadrature amplitude modulation]. Operation 820 determines y⁽²⁾ from (39) [8 macs]. Operation 822 determines ({tilde over (s)}₁,{tilde over (s)}₂) from (40) [8 macs].

This changes 3×2 STC symbol-pair decoding process 800 from process 500 slightly as follows: 6 macs for computing H—see (52), 2 macs instead of 4—see (56) and (57), and 4 macs instead of 8—see (31), (32), (59), and (60).

The total MACs remains the same between 4×2 STC symbol-pair decoding process 500 and 3×2 STC symbol-pair decoding process 800.

Note that s_(i), i=1, . . . , 8 can be obtained from {tilde over (s)}_(i), i=1, . . . , 8 from a simple linear mapping obtained from (49) and (50). For example {tilde over (s)}₁ gives s_(1I) and s_(3Q), which can be incorporated into logic of an arithmetic logic unit (ALU) logic of STC symbol-pair decoder 304 by appropriately mapping the real and imaginary parts.

FIG. 9 depicts a comparison/performance chart 900 for a 3×2 MIMO matrix B-Bit-error-rate comparison of MMSE, MMSE-SIC and maximum likelihood (ML) decoders with the STC symbol-pair decoder 304. FIG. 10 depicts a comparison/performance chart 1000 for a 3×2 MIMO matrix B-Block-error-rate comparison of MMSE, MMSE-SIC and ML decoders with STC symbol-pair decoder 304. Referring to FIGS. 9 and 10, simulations of 3×2 STC symbol-pair decoding process 800 have been conducted under similar conditions as with 4×2 STC symbol-pair decoding process 500 and FIGS. 6 and 7. Again, encoder 302 has negligible loss compared to the MMSE-SIC decoder even though the symbols are decoded and canceled in pairs instead of symbol by symbol detection and cancellation as in the MMSE-SIC. Thus, STC symbol-pair decoder 304 provides a considerable complexity advantage for a negligible performance loss for all SNR considered.

Compared to the MMSE decoder, the advantage of using successive interference cancellation is clear, i.e. the gain is about 3 dB at 10⁻² BER. In addition, the MMSE-SIC and MMSE-SIC-2 decoders have a 1 dB loss compared to the (optimal) ML detector at 10⁻² BER and 2.25 dB at 10⁻³ BER.

Assuming an operating point of 10⁻², the STC symbol-pair decoder 304 decoder using successive interference cancellation is within 1 dB of the optimal detector.

Decoder for 2×2 MIMO Matrix C STC

FIG. 11 depicts a 2×2 STC symbol-pair decoding process 1100. The 2×2 STC symbol-pair decoding process 1100 uses an estimate of the data symbols to facilitate symbol-pair symbol decoding. The 2×2 STC symbol-pair decoding process 1100 uses the received symbols to determine the order of pair decoding, which results in a very small SNR reduction.

Referring to FIGS. 3 and 11, STC pair decoder 304 can also be, for example, configured to decode a 2×2 MIMO STC matrix S. For a 2×2 MIMO STC matrix S, the signal Y received by subscriber station 104 is represented by:

$\begin{matrix} {{y = {{Hs} + N}}{{where}\text{:}}} & (64) \\ {{Y = \begin{pmatrix} y_{1} & y_{2} \\ y_{3} & y_{4} \end{pmatrix}},{H = \begin{pmatrix} h_{1} & h_{2} \\ h_{3} & h_{4} \end{pmatrix}},{S = {{\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} {s_{1} + {irs}_{4}} & {{rs}_{2} + s_{3}} \\ {s_{2} - {rs}_{3}} & {{irs}_{1} + s_{4}} \end{pmatrix}\mspace{14mu} r} = {\frac{{- 1} + \sqrt{5}}{2}.}}}} & (65) \end{matrix}$

The received signal Y can be written in vector form as:

$\begin{matrix} {{y = {{Hs} + n}}{{where}\text{:}}} & (66) \\ {{y = \begin{pmatrix} y_{1} \\ y_{2} \\ y_{3} \\ y_{4} \end{pmatrix}};{H = {\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} h_{1} & h_{2} & {- {rh}_{2}} & {irh}_{1} \\ {irh}_{2} & {rh}_{1} & h_{1} & h_{2} \\ h_{3} & h_{4} & {- {rh}_{4}} & {irh}_{3} \\ {irh}_{4} & {rh}_{3} & h_{3} & h_{4} \end{pmatrix}}};{s = {\begin{pmatrix} s_{1} \\ s_{2} \\ s_{3} \\ s_{4} \end{pmatrix}.}}} & (67) \end{matrix}$

To put Equation (56) in a form to perform symbol-pair decoding, STC symbol-pair decoder 304 linearly maps vector s as:

$\begin{matrix} {{{\overset{\sim}{s}}_{1} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {s_{1} + {irs}_{4}} \right)}},{{\overset{\sim}{s}}_{2} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {{rs}_{2} + s_{3}} \right)}},{{\overset{\sim}{s}}_{3} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {s_{2} - {rs}_{3}} \right)}},{{\overset{\sim}{s}}_{4} = {\frac{1}{\sqrt{1 + r^{2}}}{\left( {{irs}_{1} + s_{4}} \right).}}}} & (68) \end{matrix}$

The estimated received vector y is represented by:

$\begin{matrix} {{y = {{\overset{\sim}{H}\overset{\sim}{s}} + n}}{{y = \begin{pmatrix} y_{1} \\ y_{2} \\ y_{3} \\ y_{4} \end{pmatrix}};{\overset{\sim}{H} = \begin{pmatrix} h_{1} & 0 & h_{2} & 0 \\ 0 & h_{1} & 0 & h_{2} \\ h_{3} & 0 & h_{4} & 0 \\ 0 & h_{3} & 0 & h_{4} \end{pmatrix}};{\overset{\sim}{s} = {\begin{pmatrix} {\overset{\sim}{s}}_{1} \\ {\overset{\sim}{s}}_{2} \\ {\overset{\sim}{s}}_{3} \\ {\overset{\sim}{s}}_{4} \end{pmatrix}.}}}} & (69) \end{matrix}$

For the 2×2 symbol matrix S, STC symbol-pair decoder 304 first decodes {tilde over (s)}_(i), i=1, . . . , 4 and then solves for s_(i), i=1, . . . , 4 as follows

$\begin{matrix} {{s_{1} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {{\overset{\sim}{s}}_{1} - {{ir}{\overset{\sim}{s}}_{4}}} \right)}},{s_{4} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {{{- {ir}}{\overset{\sim}{s}}_{1}} + {\overset{\sim}{s}}_{4}} \right)}}} & (70) \\ {{s_{2} = {\frac{1}{\sqrt{1 + r^{2}}}\left( {{r{\overset{\sim}{s}}_{2}} + {\overset{\sim}{s}}_{3}} \right)}},{s_{3} = {\frac{1}{\sqrt{1 + r^{2}}}{\left( {{\overset{\sim}{s}}_{2} - {r{\overset{\sim}{s}}_{3}}} \right).}}}} & (71) \end{matrix}$

Note that

$\begin{matrix} {{s = {U\overset{\sim}{s}}};{U = {\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} 1 & 0 & 0 & {- {ir}} \\ 0 & r & 1 & 0 \\ 0 & 1 & {- r} & 0 \\ {- {ir}} & 0 & 0 & 1 \end{pmatrix}}}} & (72) \end{matrix}$

where U is a unitary matrix. Additionally:

y= Hs+n= HU ^(H) {tilde over (s)}+n={tilde over (H)}{tilde over (s)}+n, and  (73)

{tilde over (H)}= HU ^(H).  (74)

The error covariance matrices in the two cases are related as:

P ⁻¹=(I+ H ^(H) H )=(I+U ^(H) {tilde over (H)} ^(H) {tilde over (H)}U)⁻¹ =U ^(H)(I+{tilde over (H)} ^(H) {tilde over (H)})⁻¹ U.  (75)

The first two diagonal elements of the error covariance matrix P⁻¹ are:

d ₁ =r ²(|h ₁|² +|h ₃|²)+|h ₂|² +|h ₄|²+σ²(1+r ²)=r ²γ_(a)+γ_(b)  (76)

d ₂ =|h ₁|² +|h ₃|² +r ²(|h ₂|² +|h ₄|²)+σ²(1+r ²)=γ_(a) +r ²γ_(b)  (77)

where γ_(a) and γ_(b) are defined in (78) and (79).

The matrix P=I+{tilde over (H)}^(H){tilde over (H)} is of the form of (21) where

A=γ _(a) I ₂; γ_(a)={tilde over (γ)}_(a)+σ²; {tilde over (γ)}_(a) =|h ₁|² +|h ₃|²,  (78)

B=γ _(b) I ₂; γ_(b)={tilde over (γ)}_(b)+σ²; {tilde over (γ)}_(b) =|h ₂|² +|h ₄|²,  (79)

C=αI ₂ ; α=h ₁ *h ₂ +h ₃ *h ₄,  (80)

C ^(H) C=γ _(c) I ₂; γ_(c)=|α²|, and (81)

γ=γ_(a)γ_(b)−γ_(c).  (82)

P⁻¹ can be obtained from (23).

The STC symbol-pair decoder 304 first determines the MMSE estimate of {tilde over (s)} using:

$\begin{matrix} \begin{matrix} {\hat{s} = {\left( {I + {{\overset{\sim}{H}}^{H}\overset{\sim}{H}}} \right)^{- 1}{\overset{\sim}{H}}^{H}y}} \\ {= {\frac{1}{\gamma}\begin{pmatrix} \gamma_{b} & 0 & {- \alpha_{1}} & 0 \\ 0 & \gamma_{b} & 0 & {- \alpha_{1}^{*}} \\ {- \alpha_{1}^{*}} & 0 & \gamma_{a} & 0 \\ 0 & {- \alpha_{1}} & 0 & \gamma_{a} \end{pmatrix}{\overset{\sim}{H}}^{H}{y.}}} \end{matrix} & \begin{matrix} (83) \\ (84) \end{matrix} \end{matrix}$

The next step in decoding the 2×2 STC matrix S differs from the 4×2 STC symbol-pair decoding process 500 in the pairs that are decoded. To derive the pairs and order of decoding, STC symbol-pair decoder 304 examines the non-mapped, original matrices in (67) again. Note that the error covariance matrix P⁻¹ of the estimate ŝ has the form (75). This implies that the errors of the pair of s₁ and s₃ are the same and similarly for the pair of s₂ and s₄. Thus, the decoding order for a 2×2 STC matrix S is to decode the symbol pair having the lowest mean squared error (MSE) first. This pair with the lowest MSE is obtained by examining the first two or last two diagonal elements of (I+{tilde over (H)}^(H){tilde over (H)})⁻¹ calculated in (76) and (77). The decoding order is:

-   -   If d₁>d₂ from (76) and (77), respectively, decode the pair         (s₁,s₃) first; otherwise decode the pair (s₂,s₄) first.

For example, assuming that d₁>d₂. Then the estimates of (s₁,s₃) are obtained from the estimated {tilde over (s)} using (70). Symbols (s₁,s₃) are then quantized to the constellation to which they belong, for example, QPSK. The contribution of (s₁,s₃), e.g. the quantized values of the estimates of (s₁,s₃), are removed from the observation {tilde over (y)} to obtain the reduced order problem:

$\quad\begin{matrix} \begin{matrix} {y^{(2)} = {y - {h_{1}s_{1}} - {h_{3}s_{3}}}} \\ {= {{H^{(2)}s^{(2)}} + n}} \\ {= {{\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} h_{2} & {irh}_{1} \\ {rh}_{1} & h_{2} \\ h_{4} & {irh}_{3} \\ {rh}_{3} & h_{4} \end{pmatrix}\begin{pmatrix} s_{2} \\ s_{4} \end{pmatrix}} + {n.}}} \end{matrix} & \begin{matrix} (85) \\ (86) \end{matrix} \end{matrix}$

The STC symbol-pair decoder 304 continues the decoding process by obtaining an MMSE estimate of (s₂, s₄):

$\begin{matrix} {\quad\begin{matrix} {{{\hat{s}}^{(2)} = {\left( {I + {H^{{(2)}H}H^{(2)}}} \right)^{- 1}H^{{(2)}H}y^{(2)}}},} \\ {{= {\left( {1 + r^{2}} \right)\begin{pmatrix} a_{2} & c \\ c^{*} & a_{2} \end{pmatrix}^{- 1}H^{{(2)}H}y^{(2)}}},} \\ {{= {\frac{\left( {1 + r^{2}} \right)}{\beta}\begin{pmatrix} a_{2} & {- c} \\ {- c^{*}} & a_{2} \end{pmatrix}H^{{(2)}H}y^{(2)}}},{and}} \\ {{= {\frac{\left( \sqrt{1 + r^{2}} \right)}{\beta}\begin{pmatrix} a_{2} & {- c} \\ {- c^{*}} & a_{2} \end{pmatrix}\begin{pmatrix} h_{2} & {irh}_{1} \\ {rh}_{1} & h_{2} \\ h_{4} & {irh}_{3} \\ {rh}_{3} & h_{4} \end{pmatrix}^{H}{\overset{\sim}{y}}^{(2)}}},} \end{matrix}} & \begin{matrix} \begin{matrix} \begin{matrix} (87) \\ (88) \end{matrix} \\ (89) \end{matrix} \\ (90) \end{matrix} \\ {{{where}\mspace{14mu} \beta} = {a_{2}^{2} + {{c}^{2}.}}} & (91) \end{matrix}$

Assuming d₂>d₁, then the estimates of (s₂,s₄) are obtained from the estimated {tilde over (s)} using (71). These symbols (s₂,s₄) are then quantized to the constellation to which they belong, for example, QPSK. The contribution of (s₂,s₄), e.g. the quantized values of the estimates of (s₂, s₄), are removed from the estimated received signal vector {tilde over (y)} to obtain the reduced order problem:

$\quad\begin{matrix} \begin{matrix} {y^{(2)} = {y - {h_{2}s_{2}} - {h_{4}s_{4}}}} \\ {{= {{H^{(2)}s^{(2)}} + n}},{and}} \\ {= {{\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} h_{1} & {- {rh}_{2}} \\ {irh}_{2} & h_{1} \\ h_{3} & {- {rh}_{4}} \\ {irh}_{4} & h_{3} \end{pmatrix}\begin{pmatrix} s_{1} \\ s_{3} \end{pmatrix}} + {n.}}} \end{matrix} & \begin{matrix} (92) \\ (93) \end{matrix} \end{matrix}$

The decoding proceeds by obtaining a MMSE estimate of (s₁, s₃),

$\begin{matrix} \begin{matrix} {{{\hat{s}}^{(2)} = {\left( {I + {H^{{(2)}H}H^{(2)}}} \right)^{- 1}H^{{(2)}H}y^{(2)}}},{and}} \\ {{= {\frac{\left( \sqrt{1 + r^{2}} \right)}{\beta}\begin{pmatrix} a_{1} & c \\ c^{*} & a_{1} \end{pmatrix}\begin{pmatrix} h_{1} & {- {rh}_{2}} \\ {irh}_{2} & h_{1} \\ h_{3} & {- {rh}_{4}} \\ {irh}_{4} & h_{3} \end{pmatrix}^{H}y^{(2)}}},} \end{matrix} & (94) \\ {{{where}\mspace{14mu} \beta} = {a_{1}^{2} + {{c}^{2}.}}} & (95) \end{matrix}$

One embodiment of the 2×2 STC symbol-pair decoding process 1100 is described below. The details of each operation are referenced to the foregoing equation numbers and associated description. The associated mac number is also included. Operation 1102 determines A and determines γ_(a) from (78) [2 macs]. Operation 1104 determines B and determines γ_(b) from (79) [2 macs]. Operation 1106 determines C and determines a from (80) [2 macs]. Operation 1108 determines C^(H)C and determines γ_(c) [1 mac]. Operation 1110 determines {tilde over (H)}^(H)y from (69) [8 macs]. Operation 1112 determines γ from (82) [1 mac]. Operation 1114 determines ŝ from (83) (ignoring constant 1/λ) [8 macs]. Operation 1116 determines d₁ from (76) [1 mac]. Operation 1118 determines d₂ from (65) [1 mac].

To reduce SNR loss, 2×2 STC symbol-pair decoding process 1100 orders the pair decoding using a metric, such as the pair with the minimum mean squared error, from the estimated channel matrix. The particular ordering metric is a matter of design choice.

If d₂>d₁, then 2×2 STC symbol-pair decoding process 1100 performs operations 1120-1132. Operation 1120 determines (ŝ₁,ŝ₃) using (70) but ignoring constant 1/√{square root over (1+r²)} [2 macs]. Operation 1122 quantizes (ŝ₁,ŝ₃) by scaling constellation by γ·√{square root over (1+r²)} [1+3×2=7 macs (max for 64 QAM). Operation 1124 determines y⁽²⁾ from (85) [8 macs]. Operation 1126 determines H^((2)H)y⁽²⁾, where H^((2)H) is defined in (86), but ignoring the constant 1/√{square root over (1+r²)} [8 macs]. Operation 1128 determines β from (77) [1 mac]. Operation 1130 then determines ŝ⁽²⁾ from (87) ignoring constant 1/β[4+2=6 macs]. Operation 1132 quantizes (ŝ₂,ŝ₄) by scaling constellation by β [3×2=6 macs (max [for 64 QAM)]. The 2×2 STC symbol-pair decoding process 1100 then repeats for the next set of data symbols.

If d₁>d₂ then operation 1134 determines (ŝ₂,ŝ₄) using (70) but ignoring constant 1/√{square root over (1+r²)} [2 macs]. Operation 1136 quantizes (ŝ₂,ŝ₄) by scaling constellation by γ·√{square root over (1+r²)} [1+3×2=7 macs (max for 64 QAM). Operation 1138 determines y⁽²⁾ from (78) [8 macs]. Operation 1140 determines H^((2)H)y⁽²⁾, where H^((2)H) is defined in (93), but ignoring the constant 1/√{square root over (1+r²)} [8 macs]. Operation 1142 determines β from (81) [1 mac]. Operation 1144 determines ŝ⁽²⁾ from (94) ignoring constant 1/β[4+2=6 macs]. Operation 1146 quantizes (ŝ₁,ŝ₃) by scaling constellation by β [3×2=6 macs (max [for 64 QAM)].

FIG. 12 depicts for a comparison/performance chart 1200 for a 2×2 MIMO matrix B-Bit-error-rate comparison of MMSE, MMSE-SIC and ML decoder with STC symbol-pair decoder 304 referenced as MMSE-SIC-2. FIG. 13 depicts for a comparison/performance chart 1300 for a 2×2 MIMO matrix B-Block-error-rate comparison of MMSE, MMSE-SIC and ML decoders with STC symbol-pair decoder 304 referenced as MMSE-SIC-2. The 2×2 STC pair decoder 304 proposed detector, denoted as MMSE-SIC-2, looses about 0.75 dB compared to MMSE-SIC and about 4 dB compared to the ML detector and gains 1 dB over the MMSE detector at 10⁻² BER. The high loss of the MMSE-SIC detectors over the ML detectors can be attributed to the STC being used. The STC maps the symbols s₁, . . . , s₄ to transmitted data which belong to a higher constellation size. As an example, QPSK symbols are mapped to a 16-point constellation (16-QAM) 1400 as shown in FIG. 14. The detection regions in this mapping are smaller—which contribute to the higher errors in the MMSE type detectors. The region of interest corresponding to 10⁻² BER is from 18-22 dB in the BER curves. In this region, observe that the performance loss of MMSE-SIC detectors is about 2.5-3 dB in terms of Block error rates, compared to the 4 dB loss in terms of BER.

Accordingly, the MIMO wireless communication system and method with STC pair decoder 304 reduces the number of recursive operations when decoding received data symbols by decoding the data symbols in pairs rather than on a per symbol basis without sacrificing signal quality.

Although the present invention has been described in detail, it should be understood that various changes, substitutions and alterations can be made hereto without departing from the spirit and scope of the invention as defined by the appended claims. 

1. A method for decoding space time codes in a wireless multiple input, multiple output (MIMO) communication system, the method comprising: receiving a signal Y on r antennas, wherein r is an integer greater than one (1), wherein Y comprises a plurality of encoded data symbols s, s is encoded using a space time code matrix S, s={s₁, s₂, s₃, . . . s_(T)}, and T represents a number of data symbols received during a time t; and decoding the received signal Y using pairs of encoded data symbols.
 2. The method of claim 1 further comprising: (a) identifying one of the pairs {s_(a), s_(b)} of data symbols s from T/2 pairs from data symbols s, wherein s_(a)γ{s₁, s₂, s₃, . . . s_(T)} and s_(b)ε{s₁, s₂, s₃, . . . s_(T)}; (b) decoding the identified pair {s_(a), s_(b)} of data symbols before decoding any remaining pair of data symbols s; (c) removing a contribution of the decoded pair {s_(a), s_(b)} from Y; and repeating steps (a) through (c) for remaining pairs of data symbols until all T/2 pairs from data symbols s are decoded.
 3. The method of claim 2 wherein identifying one of the pairs {s_(a), s_(b)} of data symbols s further comprises identifying one of the pairs {s_(a), s_(b)} of data symbols s having a highest signal-to-noise plus interference ratio.
 4. The method of claim 2 further comprising: quantizing the decoded pair of data symbols to obtain the contribution in step (c).
 5. The method of claim 1 wherein decoding the received signal Y further comprises: determining a minimum mean-square estimation of the data symbols s.
 6. The method of claim 1 wherein the MIMO communication system is a 4×2 MIMO system and the space time code matrix S comprises: ${S = \begin{pmatrix} s_{1} & {- s_{2}^{*}} & s_{5} & {- s_{6}^{*}} \\ s_{2} & s_{1}^{*} & s_{6} & s_{5}^{*} \\ s_{3} & {- s_{4}^{*}} & s_{7} & {- s_{8}^{*}} \\ s_{4} & s_{3}^{*} & s_{8} & s_{7}^{*} \end{pmatrix}};$ wherein the asterisk “*” represents a complex conjugate operator.
 7. The method of claim 1 wherein the MIMO communication system is a 3×2 MIMO system and the space time code matrix S comprises: ${\overset{\_}{S} = {\begin{pmatrix} \sqrt{\frac{3}{4}} & 0 & 0 \\ 0 & \sqrt{\frac{3}{4}} & 0 \\ 0 & 0 & \sqrt{\frac{3}{2}} \end{pmatrix}\begin{pmatrix} {\overset{\sim}{s}}_{1} & {- {\overset{\sim}{s}}_{2}^{*}} & {\overset{\sim}{s}}_{5} & {- {\overset{\sim}{s}}_{6}^{*}} \\ {\overset{\sim}{s}}_{2} & {\overset{\sim}{s}}_{1}^{*} & {\overset{\sim}{s}}_{6} & {\overset{\sim}{s}}_{5}^{*} \\ {\overset{\sim}{s}}_{7} & {- {\overset{\sim}{s}}_{8}^{*}} & {\overset{\sim}{s}}_{3} & {- {\overset{\sim}{s}}_{4}^{*}} \end{pmatrix}}};$ wherein {tilde over (s)}₁=s_(1I)+js_(3Q); {tilde over (s)}₂=s_(2I)+js_(4Q); {tilde over (s)}₃=s_(3I)+js_(1Q); {tilde over (s)}₄=s_(4I)+js_(2Q), {tilde over (s)}₅=s_(5I)+js_(7Q); {tilde over (s)}₆=s_(6I)+js_(8Q); {tilde over (s)}₇=s_(7I)+js_(5Q); {tilde over (s)}₈=s_(8I)+js_(6Q), s_(i)=s_(iI)+js_(iQ), and the subscripts “I” and “Q” refer to the real and imaginary parts, respectively, of the complex value s_(i).
 8. The method of claim 1 wherein the MIMO communication system is a 2×2 MIMO system and the space time code matrix S comprises: ${S = {\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} {s_{1} + {irs}_{4}} & {{rs}_{2} + s_{3}} \\ {s_{2} - {rs}_{3}} & {{irs}_{1} + s_{4}} \end{pmatrix}}};{and}$ $r = {\frac{{- 1} + \sqrt{5}}{2}.}$
 9. A wireless multiple input, multiple output (MIMO) communication system comprising: a receiver having r antennas to receive a signal Y, wherein r is an integer greater than one (1), wherein Y comprises a plurality of encoded data symbols s, s is encoded using a space time code matrix S, s={s₁, s₂, s₃, . . . s_(T)}, and T represents a number of data symbols received during a time t; and a decoder, coupled to the receiver, to decode the received signal Y using pairs of encoded data symbols.
 10. The system of claim 9 wherein the decode includes components to: (a) identify one of the pairs {s_(a), s_(b)} of data symbols s from T/2 pairs from data symbols s, wherein s_(a)ε{s₁, s₂, s₃, . . . s_(T)} and s_(b)ε{s₁, s₂, s₃, . . . s_(T)}; (b) decode the identified pair {s_(a), s_(b)} of data symbols before decoding any remaining pair of data symbols s; (c) remove a contribution of the decoded pair {s_(a), s_(b)} from Y; and repeat steps (a) through (c) for remaining pairs of data symbols until all T/2 pairs from data symbols s are decoded.
 11. The system of claim 10 wherein the components to identify one of the pairs {s_(a), s_(b)} of data symbols s further comprises components to identify one of the pairs {s_(a), s_(b)} of data symbols s having a highest signal-to-noise ratio from among the T/2 pairs.
 12. The system of claim 9 further comprising: a quantizer to quantize the decoded pair of data symbols to obtain the contribution in step (c).
 13. The system of claim 9 wherein to decode the received signal Y further comprises components to determine a minimum mean-square estimation of the data symbols s.
 14. The system of claim 9 wherein the MIMO communication system is a 4×2 MIMO system and the space time code matrix S comprises: ${S = \begin{pmatrix} s_{1} & {- s_{2}^{*}} & s_{5} & \left. {- s_{6}^{*}} \right) \\ s_{2} & s_{1}^{*} & s_{6} & s_{5}^{*} \\ s_{3} & {- s_{4}^{*}} & s_{7} & {- s_{8}^{*}} \\ s_{4} & s_{3}^{*} & s_{8} & s_{7}^{*} \end{pmatrix}};$ wherein the asterisk “*” represents a complex conjugate operator.
 15. The system of claim 9 wherein the MIMO communication system is a 3×2 MIMO system and the space time code matrix S comprises: ${\overset{\_}{S} = {\begin{pmatrix} \sqrt{\frac{3}{4}} & 0 & 0 \\ 0 & \sqrt{\frac{3}{4}} & 0 \\ 0 & 0 & \sqrt{\frac{3}{2}} \end{pmatrix}\begin{pmatrix} {\overset{\sim}{s}}_{1} & {- {\overset{\sim}{s}}_{2}^{*}} & {\overset{\sim}{s}}_{5} & {- {\overset{\sim}{s}}_{6}^{*}} \\ {\overset{\sim}{s}}_{2} & {\overset{\sim}{s}}_{1}^{*} & {\overset{\sim}{s}}_{6} & {\overset{\sim}{s}}_{5}^{*} \\ {\overset{\sim}{s}}_{7} & {- {\overset{\sim}{s}}_{8}^{*}} & {\overset{\sim}{s}}_{3} & {- {\overset{\sim}{s}}_{4}^{*}} \end{pmatrix}}};$ wherein {tilde over (s)}₁=s_(1I)+js_(3Q); {tilde over (s)}₂=s_(2I)+js_(4Q); {tilde over (s)}₃=s_(3I)+js_(1Q); {tilde over (s)}₄=s_(4I)+js_(2Q), {tilde over (s)}₅=s_(5I)+js_(7Q); {tilde over (s)}₆=s_(6I)+js_(8Q); {tilde over (s)}₇=s_(7I)+js_(5Q); {tilde over (s)}₈=s_(8I)+js_(6Q), s_(i)=s_(iI)+js_(iQ), and the subscripts “I” and “Q” refer to the real and imaginary parts, respectively, of the complex value s_(i).
 16. The system of claim 9 wherein the MIMO communication system is a 2×2 MIMO system and the space time code matrix S comprises: ${S = {\frac{1}{\sqrt{1 + r^{2}}}\begin{pmatrix} {s_{1} + {irs}_{4}} & {{rs}_{2} + s_{3}} \\ {s_{2} - {rs}_{3}} & {{irs}_{1} + s_{4}} \end{pmatrix}}};{and}$ $r = {\frac{{- 1} + \sqrt{5}}{2}.}$
 17. A method for decoding space time codes in a wireless multiple input, multiple output (MIMO) communication system, the method comprising: receiving a signal Y on r antennas, wherein r is an integer greater than one (1), wherein Y comprises a plurality of encoded data symbols s, s is encoded using a space time code matrix S, s={s₁, s₂, s₃, . . . s_(T)}, T represents a number of data symbols received during a time t, and Y=HS+N, wherein H represents a channel matrix and N represents interference; (a) selecting a pair of data symbols to decode; (b) decoding the selected pair of data symbols; (c) removing a contribution of the decoded data symbols from the signal Y; repeating steps (a), (b), and (c) for remaining pairs of symbols in the space time code matrix S; and if T is odd, decoding a remaining symbol in the received signal Y.
 18. The method of claim 17 wherein the channel matrix H is a biorthogonal, estimated channel matrix.
 19. The method of claim 17 wherein the channel matrix H is a non-biorthogonal, estimated channel matrix, the method further comprising: estimating the data symbols to generate pairs of data symbols, wherein error covariances of data symbols in a pair are approximately identical.
 20. The method of claim 17 further comprising: quantizing the decoded pair of data symbols to obtain the contribution in step (c). 